package membresia.em.financeiro;

/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import membresia.bean.financeiro.MotivoEntrada;
import membresia.service.Service;

public class MotivoEntradaEm {

    /**
     * Método que persiste um objeto MotivoEntrada no Banco
     */
    public static void cadastraMotivoEntrada(MotivoEntrada p) {
        // persiste no banco de dados
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        em.persist(p);
        em.flush();
        em.getTransaction().commit();
        em.close();

    }

    /**
     * Método que Atualiza um Objeto MotivoEntrada
     */
    public static void atualizaMotivoEntrada(MotivoEntrada p) {
        // persiste no banco de dados
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        em.merge(p);
        em.flush();
        em.getTransaction().commit();
        em.close();
    }

    /**
     * Método busca uma MotivoEntrada pelo ID
     *
     * @return MotivoEntrada
     */
    public static MotivoEntrada findById(int id) {
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        MotivoEntrada p = em.find(MotivoEntrada.class, id);
        em.getTransaction().commit();
        em.close();
        return p;
    }

    /**
     * Método que lista todas as MotivoEntradas
     */
    @SuppressWarnings("unchecked")
    public static List<MotivoEntrada> findAll() {
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        Query q = em.createQuery("select p from MotivoEntrada p ");
        List<MotivoEntrada> MotivoEntradas = q.getResultList();
        em.flush();
        em.getTransaction().commit();
        em.close();
        return MotivoEntradas;
    }

    /**
     * Método que lista todas as MotivoEntradas
     */
    @SuppressWarnings("unchecked")
    public static List<MotivoEntrada> findByNome(String nome) {
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        Query q = em.createQuery("select p from MotivoEntrada p where p.descricao like '%"
                + nome + "%'");
        List<MotivoEntrada> MotivoEntradas = q.getResultList();
        em.flush();
        em.getTransaction().commit();
        em.close();
        return MotivoEntradas;
    }

    /**
     * Método de Exclusão de MotivoEntrada
     */
    public static void excluirMotivoEntrada(int id) {
        // exclui uma MotivoEntrada por id
        MotivoEntrada MotivoEntrada = findById(id);
        // excluir a MotivoEntrada
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        em.remove(em.getReference(MotivoEntrada.class, MotivoEntrada.getId()));
        em.flush();
        em.getTransaction().commit();
        em.close();
    }
}